]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
status/network: Add user permissions to new wifi connections
authorThore Sommer <mail@thson.de>
Mon, 2 Sep 2024 08:39:46 +0000 (10:39 +0200)
committerMarge Bot <marge-bot@gnome.org>
Mon, 2 Sep 2024 21:01:35 +0000 (21:01 +0000)
When creating a new NM connection they are by default system connections. A
user cannot create them if they don't have the correct polkit permissions
(org.freedesktop.NetworkManager.settings.modify.system).

If a user tried to add a new connection in the drop down menu, then they got
no password prompt and NM logged the following:
[...] audit: op="connection-add-activate" pid=1872 uid=1000 result="fail" \
reason="Insufficient privileges"

This change adds the current user to the user permissions for the new
connection, if the user has no permissions to modify the system connections,
which copies the behavior of GNOME Settings.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3462>

js/ui/status/network.js

index 33150afd53f869b497dd1b5f14ad80cc7a661e32..aca24182767f46d24c188fdddabfbc1d1b25ea63 100644 (file)
@@ -949,6 +949,15 @@ const WirelessNetwork = GObject.registerClass({
                 this._getDeviceDBusPath(), ap.get_path());
         } else {
             conn = new NM.SimpleConnection();
+            const permission = Polkit.Permission.new_sync('org.freedesktop.NetworkManager.settings.modify.system', null, null);
+            let allowedToShare = false;
+            if (permission)
+                allowedToShare = permission.get_allowed();
+            if (!allowedToShare) {
+                const setting = new NM.SettingConnection();
+                setting.add_permission('user', GLib.get_user_name(), null);
+                conn.add_setting(setting);
+            }
             this._device.client.add_and_activate_connection_async(
                 conn, this._device, ap.get_path(), null, null);
         }